Rateless codes, otherwise known as fountain codes, can be used to transmit messages in a rateless way. Rateless transmissions do not need to exhibit a fixed code rate, and even if they do the rate may not be known to the receiver. Rather, rateless codes may include any number of bits or symbols per transmission. During rateless transmission, no acknowledgement from a receiver may be needed, since message fragments are sent in a way that provides a high probability that the receiver can reassemble the message when it has a sufficiently large subset of the fragments, even if some losses occur during transmission. The receiver simply receives the fragments and, when it has enough fragments to reconstruct the message, it does so. As such, transmission can be uncoordinated and asynchronous. Coded blocks can be transmitted a receiver in any order, over any time period and by any number of transmitters. These features makes rateless codes a practical approach for relaying cellular communications, among other types of communications.
However, these features also make traditional encryption schemes difficult to implement. When an encrypted message is streamed over a communication medium that uses reverse communication, the message is usually sent block-by-block, and each block is acknowledged by the receiver. This allows the sender to chain the block encryption process. However, since there is no order to the coded blocks that are generated using rateless codes, common encryption protocols will not work.